package com.ja10.books;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import com.example.books.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

public class SearchResultActivity extends Activity {

	SearchListAdapter<BookList> adapter = null;
	ArrayList<BookList> data = null;
	BookList item = null;
	ListView list = null;
	Intent i = null;
	int cnt = 0;	// 検索件数
	boolean favorite = false;	//　お気に入り登録ボタンのクリックの有無
    String time = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_book_search_result);
		
		// インテントを取得
		Intent intent = getIntent();
		// インテントに保存されたデータを取得
		String key_word = intent.getStringExtra("key_word");
		
//　SQL文を記述
		String sql = "SELECT * FROM books WHERE delete_flag = 0 and open_flag = 1 and title LIKE '%" + key_word + "%'";

		Connection con = null;
		Statement smt = null;
		
		try{
			
//　データベースを接続するためのConnectionオブジェクトを取得
//　SQLを発行するためのStatementオブジェクトを取得
			con = DBManager.getConnection();
			smt = con.createStatement();

//　StatementオブジェクトのexecuteQuery()メソッドでSQLを発行(検索)
			ResultSet rs = smt.executeQuery( sql );
			
//　配列の内容をBookListオブジェクトに詰め替え
			data = new ArrayList<BookList>();
			
//更新時刻を取得
			Calendar calendar = Calendar.getInstance();
			int year = calendar.get(Calendar.YEAR);
		    int month = calendar.get(Calendar.MONTH) + 1;
		    int day = calendar.get(Calendar.DATE);
		    time = (year + "-" + month + "-" + day);

			while ( rs.next() ){
		//		BookList item = new BookList();
				item = new BookList();
				item.setId(rs.getInt( "id" ));
				item.setGenreName(rs.getInt( "genre_id" ));
				item.setPublisherName(rs.getInt( "publisher_id" ));
				item.setTitle(rs.getString( "title" ));
				item.setWriter(rs.getString( "writer" ));
				item.setContent(rs.getString( "content" ));
				item.setRecordDate(time);
				item.setPublicationDate(rs.getString( "publication_date" ));
				item.setPictureBmp(rs.getString("picture"), 50);
				item.setIsbn(rs.getString( "isbn" ));
				
				data.add(item);
				cnt++;
			}
			
			if( cnt == 0 ){
				
				// SearchResultActivityへのインテントを作成
				Intent i = new Intent(this, SearchActivity.class);
				
				if (i != null) {
					
		            i.putExtra("error_msg", "※『" + key_word + "』に一致する書籍はありません。");
		    		
		            // アクティビティを起動
					startActivity(i);

					// SearchActivityを終了
					finish();
		        }	
				
			}
		//　検索件数を取得
			TextView txtCnt1 = ( TextView )findViewById( R.id.txtCnt1 );
			String cntStr = Integer.toString(cnt);
			txtCnt1.setText(cntStr);
				
		//　ListItem配列とレイアウトとを関連付け
				adapter = new SearchListAdapter<BookList>(this, data, R.layout.list_item_book, 1);
				
		//　アダプターをもとにリストを生成
				list = (ListView)findViewById(R.id.listBookSearch);
				list.setAdapter(adapter);
			

		
//　----------リスト項目クリック時の処理を定義
			list.setOnItemClickListener(
					new AdapterView.OnItemClickListener() {
						public void onItemClick(AdapterView<?> av, View view, int position, long id){
							
							// -------書籍IDを取得
							int idBook = data.get(position).getId();
							
							if(!favorite){
							//　-------書籍詳細画面へ
							
								// SubListActivityへのインテントを作成
								i = new Intent(getBaseContext(), BookDetailActivity.class);
								
						        if (i != null) {
						            i.putExtra("id", idBook);
						            
						            // アクティビティを起動
									startActivity(i);
						        }
							}else{
							//　-------お気に入り登録へ
																
								if(item != null) {
									
									new FavoriteEntry(data.get(position), view.getContext());
									favorite = false;
								}
							}
						}
					}
				);

		} catch (java.sql.SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{

			if( smt != null ){
				try {
					smt.close();
				} catch (java.sql.SQLException e) {
					e.printStackTrace();
				}
			}
			if( con != null ){
				try{
					con.close();
				} catch (java.sql.SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}

//----------------　[ログイン]ボタンクリック時に呼び出されるメソッド
	public void btnLogin_onClick(View view){
			
	// LoginActivityへのインテントを作成
		Intent i = new Intent(this, LoginActivity.class);
	// アクティビティを起動
		startActivity(i);
	}	
		
//----------------　[メニュー]ボタンクリック時に呼び出されるメソッド
	public void btnMenu_onClick(View view){
			
//	// SearchResultActivityへのインテントを作成
//		Intent i = new Intent(this, MainActivity.class);
//	// アクティビティを起動
//		startActivity(i);
		
	// SearchResultActivityを終了
		finish();
	}
	
//----------------　[お気に入り登録]ボタンクリック時に呼び出されるメソッド
	public void btnFavorite_onClick(View view){
			
		favorite = true;
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}	
}
